<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/11/20
 * Time: 13:19
 */

namespace App\Http\Controllers\Api;

use App\Helpers\Api\ApiResponse;
use App\Http\Controllers\Controller;


use App\Models\Account;
use App\Models\Addressee;
use App\Models\Device;
use Carbon\Carbon;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\DB;
use Symfony\Component\HttpFoundation\Response as FoundationResponse;
use Illuminate\Http\Request;
use Symfony\Component\HttpKernel\Exception\HttpException;

class HhController extends Controller
{
    use ApiResponse;
    protected $pageSize = 10;
    public function index (Request $request)
    {
        $redis =app("redis");
//        $redis->scan(0,"msg:device:*",1000);
//        var_dump($hh);exit;

//        $iterator = null;
        $keys = $redis->scan('MATCH', 'msg:device:*');
        foreach ($keys as $key)
        {
//                var_dump($key);
            echo $key . PHP_EOL;
        }
        var_dump($keys);exit;
        while ($keys = $redis->scan('MATCH', 'msg:device:*'))
        {
            foreach ($keys as $key)
            {
//                var_dump($key);
                echo $key . PHP_EOL;
            }
        }


//        if ($keysArr)
//        {
//            foreach ($keysArr as $key)
//            {
//                var_dump($key);
//            }
//        }


//        $redis =app("redis");
//        $keys = $redis->hlen("msg:device:900:*");
//        var_dump($keys);exit;
//        if($keys){
//
//        }else{
//            var_dump(369);exit;
//        }

//        var_dump($keys);exit();
//        foreach($keys as $devices){
//            $device =$redis->hgetall($devices);
//                DB::table("device")->where("sn",$device['sn'])->update(["status"=>$device['status'],"active"=>$device['active'],"num"=>$device['num'],"Record_at"=>$device['Record_at'],"updated_at"=>$device['updated_at']]);
//        }
//        $count =$redis->llen("device:list:900:*");
//        var_dump($count);exit;

//        RedisHandler::syncApiAccount($len,$status);

//        $client = new Client([
//
//            // Base URI is used with relative requests
//            'base_uri' => 'http://optimadev.ivt.edu.cn/api/',
//            // You can set any number of default request options.
//            'timeout'  => 5.0,
//        ]);
//
//        $res = $client->request('GET', 'qrCode');
//        echo $res->getBody();


    }

//    public function getDe(Request $request){
//        $data =[
//            'hx'=>165,
//            'ww'=>160,
//        ];
//        return $this->success($data);
//    }



//        public function getAccount(Request $request)
//    {
////        ini_set('default_socket_timeout', -1);
//        try {
//            $redis = app("redis");
//            $status =$request->get("status");
//
//            //找出符合条件的账号(只有email未知)
//            $accounts =$redis->lpop("account:list:".$status);
//            //账号不存在 解锁
//            if(!$accounts){
//                return $this->error("合适的账号不存在");
//            }
//            $key = "msg:account:".$accounts;
//            $account = $redis->hgetall($key);
//            $data = [
//                //设备相关
//                'email' => $account['email'],
//                'cert' => $account['cert'],
//                'password' => $account['password'],
//                'Record_at' => $account['Record_at'],
//            ];
//            if (count($data)==0){
//                return $this->error("合适的账号不存在");
//            }
//
//
//            return $this->success($data);
//        } catch (\Exception $e) {
//            return $this -> error($e ->getMessage());
//        }
//    }
//
//        /**
//         * @apiPermission none
//         * @apiPermission anyone
//         * @apiGroup Account
//         * @api {post} /api/v1/replyAccount 回执账号
//         * @apiName replyAccount
//         * @apiVersion 1.0.0
//         * @apiParam {String} email 账号
//         * @apiParam {String} cert  证书码
//         * @apiParam {String} status  状态
//         * @apiParam {int} is   是否需要记录时间
//         * @apiSuccess {json} Success-Response:
//         * { "result": "测试" ,"status_code":0}
//         * @apiSampleRequest /api/v1/replyAccount
//         */
//        public function replyAccount(Request $request){
//        try {
//            $this -> apiValidate($request , [
//                'email' => "required",
//                'status' =>"required",
//            ]);
//            $redis = app("redis");
//            $email =$request->get("email");
//            $status =$request->get("status");
////            $fp = fopen("replyacc.txt", "w");
////           if (!flock($fp, LOCK_EX)) {
////               return $this->error("系统繁忙，请稍后再试");
////           }
//            $key = "msg:account:".$email;
//            $account = $redis->hgetall("msg:account:".$email);
//            if(!$account){
////                 flock($fp, LOCK_UN);
//                return $this->error("账号不存在");
//            }
//            $redis->hset($key,"cert",$request->get("cert"));
//            $redis->hset($key,"status",$status);
//            if($request->get("is") ==1){
//                $redis->hset($key,"Record_at",time());
//            }
//            $redis->hset($key,"updated_at",Carbon::now());
//            $data = [
//                'message' => '回执成功',
//            ];
//            //加入列表中
//            $key ="account:list:".$status;
//            $redis->rpush($key,$email);
////                 flock($fp, LOCK_UN);
//            return $this->success($data);
//        } catch (\Exception $e) {
//            return $this -> error($e ->getMessage());
//
//        }
//    }
//    public function getDe(Request $request)
//    {
//        try {
////            $this -> apiValidate($request , [
////                'machines' => "required",
////                'ProductType' =>"required",
////                'status' =>"required",
////            ]);
//            $redis = app("redis");
//            $tp =$request->get("ProductType");
//            $status =$request->get("status");
//            $fp = fopen("getdevice.txt", "w");
//            if (!flock($fp, LOCK_EX)) {
////                return $this->error("系统繁忙，请稍后再试");
//                $result['code'] =404;
//                $result['data'] ="系统繁忙，请稍后再试";
//
//                return response() -> json($result);
//            }
//            $len =$redis->llen("device:*");
//            if($len <1){
//                flock($fp, LOCK_UN);
//                $result['code'] =404;
//                $result['data'] ="暂时没有可用的设备码";
//
//                return response() -> json($result);
//            }
//            for ($x=0; $x<=$len; $x++) {
//                $code =$redis->blpop("device:*",5);
//                if($code){
//                    $code =unserialize($code[1]);
//                }
//                if($code['active'] == 0 ||$code['status'] == $status||$code['tp'] ==$tp){
//                    $data = [
//                    //设备相关
//                    'udid' => $code['udid'],
//                    'BluetoothAddress' => $code['bt'],
//                    'Imei' => $code['imei'],
//                    'WiFiAddress' => $code['wifu'],
//                    'ecid' => $code['ecid'],
//                    'ProductType' => $code['tp'],
//                    'ModelNumber' => $code['nb'],
//                    'RegionInfo' => $code['reg'],
//                    'serial' => $code['sn'],
//                    'Ethernet' => $code['Ethernet'],
//                    'ICCID' => $code['ICCID'],
//                    'IMSI' => $code['IMSI'],
//                    'BasebandSerialNumber' => $code['BasebandSerialNumber'],
//                    'BasebandMasterKeyHash' => $code['BasebandMasterKeyHash'],
//                    'BasebandChipID' => $code['BasebandChipID'],
//                    'Record_at' => $code['Record_at'],
//                    ];
//                    $code['active'] =1;
//                    $code['updated_at']=Carbon::now();
//                    $redis->rpush("device:*",serialize($code));
//                    flock($fp, LOCK_UN);
//                    $result['code'] =200;
//                    $result['data'] =$data;
//                    return response() -> json($result);
//                    break;
//                }
//            }
//            flock($fp, LOCK_UN);
//            return $this->error("暂时没有可用的设备码");
//        } catch (\Exception $e) {
//            file_put_contents('error6.txt' , var_export($e->getTraceAsString(), true));
//            return $this -> error($e ->getMessage());
//        }
//    }
//
//    public function replyDe(Request $request){
//        try {
////            $this -> apiValidate($request , [
////                'serial' => "required",
////                'status' =>"required",
////                'ProductType'=>"required",
////            ]);
//            $fp = fopen("replydevice.txt", "w");
//            if (!flock($fp, LOCK_EX)) {
//                $result['code'] =404;
//                $result['data'] ="系统繁忙，请稍后再试";
//
//                return response() -> json($result);
////                return $this->error("系统繁忙，请稍后再试");
//            }
//            $redis = app("redis");
//            $sn =$request->get("serial");
//            $tp =$request->get("ProductType");
//            $status =$request->get("status");
//            $len =$redis->llen("device:*");
//            if($len <1){
//                flock($fp, LOCK_UN);
//                $result['code'] =404;
//                $result['data'] ="没有设备码";
//                return response() -> json($result);
////                return $this->error("没有设备码");
//            }
//            for ($x=0; $x<=$len; $x++){
//                $code =$redis->blpop("device:*",20);
//                if($code){
//                    $code =unserialize($code[1]);
//                }
//                if($code['sn']==$sn){
//                    $code['updated_at'] =Carbon::now();
//                    $code['status'] =$status;
//                    if($request->get("is") ==1){
//                        $code["Record_at"]=time();
//                    }
//                    $redis->rpush("device:*",serialize($code));
//                    flock($fp, LOCK_UN);
//                    $data = [
//                        'message' => '回执成功',
//                    ];
//                    flock($fp, LOCK_UN);
//                    $result['code'] =200;
//                    $result['data'] ="chenggong";
//                    return response() -> json($result);
////                    return $this->success($data);
//                }
//            }
//            flock($fp, LOCK_UN);
//            $result['code'] =404;
//            $result['data'] ="合适的设备不存在";
//            return response() -> json($result);
////            return $this->error("合适的设备不存在");
//        } catch (\Exception $e) {
//            return $this -> error($e ->getMessage());
//        }
//    }

}